Image data is used in a variety of applications, such as pictures and videos. Raw image data (that is, uncoded or decoded image data, such as pictures, video, graphics, or display data) is often stored prior to encoding, following decoding, following rendering, and/or in a display buffer for image data to be displayed. Storage and retrieval of raw image data tends to suffer bandwidth limitations in core processing systems, such as video, image, graphics, and display core systems.
In image processing systems such as video, image, and graphics processing pipelines, raw data is accessed (e.g., fetched or stored) as needed for processing by intermediate modules. For example, in the case of video processing, intermediate modules fetch and store raw data in the form of reference pixel data, original pixel data, reconstructed pixel data, and the like. Such data access requires high bandwidth (BW) usage, which leads to high power consumption. This is especially true for higher bit-depth (i.e., more than 8 bits/sample) data used in those pipelines (e.g., 10- or 12-bit high dynamic range (HDR) video processing). In such cases, the situation will be even worse with the burden of memory access (both internal and external memory) significantly increased due to data size misalignment. Usually, padding is needed for such higher bit-depth data to make the bits of the samples aligned with the normal word or byte memory accessing boundaries.
For example, 10-bit pixels may be stored in a 16-bit memory unit (such as in a P010 format), with 6 bits used only for padding purposes and not contributing to the actual sample value. Direct access of such data incurs a 37.5% bandwidth waste.
As another example, three 10-bit pixels could be stored into a 32-bit memory unit, with 2 bits unused for padding purpose. Direct access of such data incurs at least 6.25% bandwidth waste.
Raw data compression has been used to address the bandwidth issue for storage and retrieval of raw image data. One example raw data compression scheme is a tile-based approach that allows image data to be randomly accessed based on a random access unit (RAU), e.g., a tile.